import { defineStore } from 'pinia'

import { getProductList, getDetail } from '../api/pro'

type State = {
  productList: Product[]
  confirmOrder: Array<any>
}

// 命名以 use 开头
// 用法 defineStore(名称, 对象)
export const useProductStore = defineStore(
  'product-store', // store 名称, 要求唯一
  {
    // 为了更好的支持 ts, state 最好写成箭头函数
    // 相当于 vue 的 data
    state: (): State => {
      return {
        productList: [],
        confirmOrder: []
      }
    },
    // 相当于 vue 的 computed
    getters: {

    },
    // 相当于 vue 的 methods
    actions: {
      // 获取商品列表
      async fetchList(page: number) {
        const result = await getProductList(page)

        // 接口的数据, 赋给 state
        if (page === 1) {
          this.productList = result.data
        } else {
          this.productList.push(...result.data)
        }
        return result.data;

      },
      fetchProduct(proid: string) {
        // 根据 proid 从产品列表里找出 对应的产品详情数据
        const product = this.productList.find(item => item.proid === proid)
        return product
      },

      async requestProduct(proid: string) {
        // 发送请求, 获取产品详情数据
        const result = await getDetail(proid)
        return result.data
      },

      ddsj(time: any) {
        this.confirmOrder = time
      }



    }
  }
)